package com.xx.ems.system;

import java.util.List;

import javax.annotation.Resource;

import org.hibernate.Criteria;
import org.hibernate.Query;

import com.xx.ems.util.EquipmentBase;

/**
 * @author xxx
 * @date 2014-2-26
 * @version 1.0
 * 描述: Dao的基础类,实现公共的属性、方法
 */
public class BaseDao extends BaseDS {
	@Resource
	private EquipmentBase equipmentBase;
	/**
	 * 进行分页后的总页数
	 */
	private int totalpage;
	/**
	 * 描述: 获取设备基础工具类
	 * @return
	 * @date 2014-2-26
	 */
	public EquipmentBase getEquipmentBase() {
		return equipmentBase;
	}
	public void setEquipmentBase(EquipmentBase equipmentBase) {
		this.equipmentBase = equipmentBase;
	}
	/**
	 * 描述: 获取分页的总页数 
	 * @return
	 * @date 2014-3-4
	 */
	public int getTotalpage() {
		return totalpage;
	}
	public void setTotalpage(int totalpage) {
		this.totalpage = totalpage;
	}
	/**
	 * 描述: 分页查询 
	 * @param pageNow 当前页数
	 * @param MaxCount 每页显示的数量
	 * @param hql 
	 * @return
	 * @date 2014-3-4
	 */
	@SuppressWarnings({"rawtypes"})
	public List getPagingList(int pageNow, int maxCount, String hql){
		Query query = getCurrentSession().createQuery(hql);
		int size = query.list().size();
		/**
		 * 计算总页数
		 */
		if (size % maxCount != 0) {
			this.totalpage = size/maxCount+1;
		}else {
			this.totalpage = size/maxCount;
		}
		/**
		 * 设置从第几条数据开始取
		 */
		query.setFirstResult((pageNow-1) * maxCount);
		/**
		 * 设置总共要取得数据条数
		 */
		query.setMaxResults(maxCount);
		/**
		 * 获取分页结果集
		 */
		List list = query.list();
		
		return list;
	}
	/**
	 * 描述: 根据Criteria来进行分页
	 * @param pageNow
	 * @param maxCount
	 * @param criteria
	 * @return
	 * @date 2014-3-6
	 */
	@SuppressWarnings("rawtypes")
	public List getPagingListByCriteria(int pageNow,int maxCount,Criteria criteria){
		int size = criteria.list().size();
		/**
		 * 计算总页数
		 */
		if (size % maxCount != 0) {
			this.totalpage = size/maxCount+1;
		}else {
			this.totalpage = size/maxCount;
		}
		criteria.setFirstResult((pageNow-1) * maxCount);
		criteria.setMaxResults(maxCount);
		List list = criteria.list();
		
		return list;
	}
}